package com.ruoyi.btlfbreed.mapper;

import java.util.List;

import com.ruoyi.btlfbreed.domain.MyTbChickenSalesData;
import com.ruoyi.btlfbreed.domain.TbChickenSalesInfo;
import com.ruoyi.btlfbreed.domain.TbChickenOutRegistry;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 肉鸡销售Mapper接口
 * 
 * @author codeman
 * @date 2024-05-08
 */
public interface TbChickenSalesInfoMapper 
{
    /**
     * 查询肉鸡销售
     * 
     * @param saleId 肉鸡销售主键
     * @return 肉鸡销售
     */
    public TbChickenSalesInfo selectTbChickenSalesInfoBySaleId(Long saleId);

    /**
     * 查询肉鸡销售列表
     * 
     * @param tbChickenSalesInfo 肉鸡销售
     * @return 肉鸡销售集合
     */
    public List<TbChickenSalesInfo> selectTbChickenSalesInfoList(TbChickenSalesInfo tbChickenSalesInfo);

    /**
     * 新增肉鸡销售
     * 
     * @param tbChickenSalesInfo 肉鸡销售
     * @return 结果
     */
    public int insertTbChickenSalesInfo(TbChickenSalesInfo tbChickenSalesInfo);

    /**
     * 修改肉鸡销售
     * 
     * @param tbChickenSalesInfo 肉鸡销售
     * @return 结果
     */
    public int updateTbChickenSalesInfo(TbChickenSalesInfo tbChickenSalesInfo);

    /**
     * 删除肉鸡销售
     * 
     * @param saleId 肉鸡销售主键
     * @return 结果
     */
    public int deleteTbChickenSalesInfoBySaleId(Long saleId);

    /**
     * 批量删除肉鸡销售
     * 
     * @param saleIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbChickenSalesInfoBySaleIds(Long[] saleIds);

    /**
     * 批量删除肉鸡出栏
     * 
     * @param saleIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbChickenOutRegistryBySaleIds(Long[] saleIds);
    
    /**
     * 批量新增肉鸡出栏
     * 
     * @param tbChickenOutRegistryList 肉鸡出栏列表
     * @return 结果
     */
    public int batchTbChickenOutRegistry(List<TbChickenOutRegistry> tbChickenOutRegistryList);
    

    /**
     * 通过肉鸡销售主键删除肉鸡出栏信息
     * 
     * @param saleId 肉鸡销售ID
     * @return 结果
     */
    public int deleteTbChickenOutRegistryBySaleId(Long saleId);

    @Select("<script> " +
    "SELECT year(sale_date) year,MONTH(sale_date) month,sum(sale_weight*sale_price) saleAmount,sum(sale_weight*sale_cost) saleCostAmount FROM tb_chicken_sales_info\n" +
    "where year(sale_date)=#{year} and MONTH(sale_date)=#{month} \n" +
    "group by year(sale_date),MONTH(sale_date)\n" +
    "order by year(sale_date),MONTH(sale_date) </script>")
    public List<MyTbChickenSalesData> getMonthSalesData(@Param("year") String year, @Param("month") String month);

}
